/**
 * Clase que ejectuta las tareas asignadas.
 * 
 * @author HPCIII_Team2013
 */
package cl.ucn.hpc.webCrawler;

import cl.ucn.hpc.webCrawler.IQueue;
import cl.ucn.hpc.webCrawler.IRunnableTask;

import java.util.List;

public class Spider implements Runnable {
	private IQueue cola;
	private PoolSpider pool;
	
	/**
	 * Constructor de la clase.
	 * 
	 * @param colaRec La lista de trabajos de que debe realizar.
	 * @param poolRec El pool de spiders al que pertenece. 
	 */
	public Spider(IQueue colaRec, PoolSpider poolRec) {
		cola = colaRec;
		pool = poolRec;
	}
	
	/**
	 * Ejecucion de la cola de trabajos.
	 * 
	 * @see java.lang.Runnable#run()
	 */
	@Override
	public void run() {		
		while (cola != null && !cola.isShutDown()) {
			IRunnableTask t;			
			try {
				t = this.cola.take();
				List<String> linksEncontrados  = t.execute();
				pool.addLinks(linksEncontrados);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}			
		}
	}
}
